module dynarray
  use derived
  use table_type

  ! Geometric object
  type(GeometricObject),pointer,dimension(:) :: geom_obj

  ! Maps for sinks
  integer,pointer,dimension(:,:) :: sink_map

  ! Reaction rate between objects and geometric objects
  type(SinkReactionType),pointer,dimension(:) :: sink_type

  !-----------------------------------------------------!

  ! Count spatial distribution of defects
  type(CountSpatialDistribution),pointer,dimension(:) :: count_spatial_dist

  ! Count the evolution in time
  type(CountTimeEvolution),pointer,dimension(:) :: count_time_evol

  ! Map for virtual box
  integer,pointer,dimension(:,:,:) :: vboxMap

  ! Virtual box
  type(VirtualBox),pointer,dimension(:) :: vbox

  ! Type of the executions
  type(ExecuteType) :: exe_type

  ! Simulated object
  type(SimulatedObject),pointer,dimension(:) :: sim_obj

  ! Table for event lists
  type(EventTable),pointer,dimension(:) :: event_table

  ! Table for profile lists
  type(EventProfileTable),pointer,dimension(:) :: event_profile

  ! Table for spontaneous event lists
  integer,pointer,dimension(:) :: spont_event_table

  ! Name of the file for local output
  type(output_file_name_x),pointer,dimension(:) :: outfx
  type(output_file_name_y),pointer,dimension(:) :: outfy
  type(output_file_name_z),pointer,dimension(:) :: outfz
  type(output_file_name_x),pointer,dimension(:) :: outftx
  type(output_file_name_y),pointer,dimension(:) :: outfty
  type(output_file_name_z),pointer,dimension(:) :: outftz

  ! Name of the file for global output
  type(output_file_name_x),pointer,dimension(:) :: goutfx
  type(output_file_name_y),pointer,dimension(:) :: goutfy
  type(output_file_name_z),pointer,dimension(:) :: goutfz

  ! Saving the counts time evolution of defects spatially
  type(TimeEvolutionSpatialDistribution),pointer,dimension(:) :: count_object


  ! Reaction rates among the objects
  type(ReactionRate),pointer,dimension(:) :: react_rate

end module dynarray
